package com.AdvancedDemos.动态代理;

import java.util.ArrayList;

/**
 * 需求：通过聚合关系,不修改arrayList的源代码，扩展其功能实现栈结构(先进后出)
 * 将ArrayList聚合到本类中
 */
/* 装饰者设计模式
 * A类在不改变B类源代码的基础上，增强了B类的功能称之为"装饰者设计模式"
 */

public class ArrayList扩展成栈<T> {

    //聚合了ArrayList
    private ArrayList<T> list = new ArrayList<>();

    //压栈
    public void push(T e) {

        list.add(e);
        System.out.println(list);
    }

    //弹栈
    public T pop() {

        T lastOne = list.remove(list.size() - 1);

        return lastOne;
    }
}
